package licode.unisop.single.platform.application.gateway;

import licode.unisop.provider.info.*;
import licode.unisop.provider.vo.SiAssetBrief;
import licode.unisop.provider.vo.SiAssetEntity;
import licode.unisop.provider.vo.SiPageResult;
import licode.unisop.single.platform.application.info.SiAssetRemove;

import java.io.Serializable;
import java.util.List;

/**
 * uni-platform-single
 *
 * @author licode
 * @date 2016-08-27 15:30:58
 */
public interface PlatAssetDao {
    void add(SiAssetEntity item);
    void update(SiAssetEntity item);
    void removeWithId(Serializable id);
    boolean exist(Serializable id);
    void removeAssets(SiAssetRemove info);
    Long getSubAssetCount(SiAssetLookupIn lookupIn);
    SiAssetBrief getAssetBrief(SiAssetLookupIn lookupIn);
    SiAssetEntity getWithId(Serializable id);
    SiAssetEntity getPlatAsset(SiAssetId idInfo);
    SiAssetEntity lookupAsseByCode(SiLookupAssetByCodeIn lookupIn);

    List<SiAssetEntity> getPlatAssets(SiAssetIds idsInfo);
    List<SiAssetEntity> getAuthPlatAssets(SiAssetIds idsInfo);

    List<SiAssetEntity> getPlatAssetsByRootId(SiRootId idInfo);

    List<SiAssetBrief> findAssetList(AssetListInfo req);
    SiPageResult<SiAssetBrief> findAssetPage(AssetPageInfo req);
    SiPageResult<SiAssetBrief> findHoldAssetPage(HoldAssetPageInfo req);
    SiPageResult<SiAssetBrief> findAssetHoldPage(AssetHoldPageInfo req);
}
